CONECTING TRANSMISSION: 

========================================================================== 
                              T O P  S E C R E T
                      E Y E S - O N L Y  D I S P A T C H
                   D E S T R O Y  A F T E R  R E A D I N G

                         X-FILE INQUIRY #875110-6249
                            Viedzm1n Alias Darkman 
                            FAQ version  0.4 B
              L A S T   U P D A T E D :   28 SEPTEMBER  1 9 9 7
  
==========================================================================
===========================================================================
Greetings mortals ! 
             
Witam w kolejnym faq ,dzis zajmiemy sie glownie phreakingiem...
nie bede tu marnowal kb na smuty typu ze pisze to w celach  edukacyjnych,
ze nie ponosze odpowiedzialnosci za skutki  itp. 

I. Najpierw  pokaze wam  w jaki sposob mozna grzebac  w ...faxach 
   i sekretarkach:

1. Wymagania: Na poczatek musimy dysponowac tonowym telefonem, ale te maja
prawie wszyscy. Trick ten dziala  na wszystkich telefaxach 
( ja testowalem glownie na modelach  Panasonic  ) oraz wiekszosci sekretarek.

 2. Hunting:
Gdy juz znajdziemy ofiare, to najlepiej dzwonic do niej w czasie jej
nieobecnosci, (choc niekoniecznie) wtedy to wlaczana jest sekretara ,
a nawet jesli nie to wlaczy sie po 20 sygnalach :). Gdy juz mamy sygnal
aby nagrac jakis message , wsciskamy szybko 1 1 1, powinien zmienic sie 
sygnal  i juz jestesmy w domu.

  3.I've got the power...: 

Teraz to tylko zabawa: wciskajac  cyfry 1..9 mamy rozne opcje!
jesli chcemy przejsc do innej to trzeba wscisnac * (gwiazdke) aby
zresetowac .

 Np. jesli chcemy podsluchiwac co dzieje sie w 
    pomieszczeniu  to naciskamy 5 lub 6 , opcja ta daje takze mozliwosc
    wysylania dzwieku przez glosnik faxu.
    Mozna tez zmienic tresc sekretarki ,lub odsluchac  nagrane wiadomosci
     ( klawisze 3,4 )Wkrotce podam dokladnie rozpisane kody do
    poszczegolnych opcji i modeli faxow. (te przyklady powyzej dzialaja 
    na wiekszosci :) ). 
          UWAGA! DZIALA TYLKO NA DEFAULTOWYCH USTAWIENIACH!
 
II. Podam teraz inne PhoneCheat:
 
1.Jakis czas temu centrale roznych partyline  zbijaly kupe szmalu (btw: teraz maja konkurencje ]
w postaci audiotele :) ) na ....instytucjach panstwowych ! Otoz dzwonilo sie np. 
na  Pogotowie ( numer chyba kazdy zna :) )   rozlaczalo i szybko wykrecalo
 wlasciwy numer.  Teraz wiekszosc juz ma  protection ale zawsze mozna
 sprobowac , na wioskach dziala .
       
2. Istnieje tez pewna sztuczka aby zapewnic "niesmiertelnosc" kartom telefonicznym .
wycinamy pasek z karty, nagrywamy na magnetofonie wielosladowym i wtedy naklejasz na
zuzyta karte .( Ponoc dziala tez  tylko po owinieciu karty tasma video)
             (support by User Jama)

3.Mozna tez pokryc karte lakierm lecz karcie musi byc kilka ostatnich impulsow, 
 a lakier trzeba rozprowadzic jednym pewnym pociagnieciem pedzelka .
    (support by bTh)

4. Najszybszy lecz i najbardziej chamski sposob na karte...

  Szukamy jakies obleganej budki telefonicznej...bierzemy gume do zucia
  lub zaostrzona zapalke i zaklejamy wylot karty telefonicznej (musi mocno
   sie trzymac). Ktos kto wejdzie do naszej budki-pulapki srogo sie rozcaruje
   gdy bedzie  chcial wybrac karte, zobaczy tylko na wyswietlaczu "Automat 
   zepsuty" i nic.... Gdy gosc wyjdzie zrezygnowany odklejamy gume i mamy karte!
  

5. Czesto  budki  stoja  na zdezelowanych stojakach, czasami nawet 
   drwenianych. Po odkreceniu kilku srobek mozna sie dostac do  kabli 
   do ktorych podlaczamy swoj aparat i  dzwonimy  na  jakies 0700 :) 
                       (support by  hellfire)
 
6. Automaty z Coca-Cola (support by Hellfire)

      Trzeba znalezc sobie automat ktoru przyjmuje 5 zlotowki
      i wrzucic mu  stare  20zl.  Automat  wypluje  puszke  z
      napojem i wyda  raszte  z ...5zl! :)).  Automatow  tych
      mozna uzywac tez jako rozmieniaczy na "grube", wrzucamy
      mu np. cala kieszen 10 groszowek,  kazemy  potem  oddac
      pieniadze, a on oddaje na juz grubymi.








III.  IRC again..

Hmmm chyba w kazdym faq znajduja sie jakies info o irc.

1. Restricted: -r +iw juz nie dziala na zadnym ze znanych serwerow:(
    (oczywiscie only polskich) lecz mozna to olac wklepujac :
  
  /server mops.uci.agh.edu.pl 4440     mozna tez uzyc  severa ir.bt.net




IV. Callbacki.


Kazdy chcialbym miec calling for free z domu ....
Ja znam 4 mozliwosci  :
1. Duzo osob dialuje z pracy lub uczelni 
2. Zalatwic sobie  robote w tpsa (praktycznie goscie maja phona za grosze
   lub darmoche. 
3. Zlozyc  boxa...jednak malo kto slyszal dzialajacych w Polsce boxach,
   kazdy tez radzi zlozyc inny box. Ja glownie slysze ze niby to dzialaja
   silver boxy ( wkrotce jak zloze to napisze wreszcie prawde o boxach pl).
4. Callabacki .
  Zajme sie tym ostatnim, callback to numery 0800....  ktore po odpowiednim 
zalogowaniu odzwaniaja do ciebie (btw: lecz latwo cie namierzyc gdyz na 
serwerze zostaje twoj numer !). Podam tu numery i psswd jakie mi sie udalo
zebrac, ale zaznaczam ze czesc hasel mogla juz zostac zmieniona .


                -0-80020043 login:adam2  psswd:b34fr0
            
                -0-80020041 login:unknown psswd:unknown
                
                -0-80020034 login:koliber psswd:koliber
                 
                -0-80020019 login:unknown psswd:unknown
               
                -0-80020866 login:ppp     Psswd:ppp
                 
      Jesli nie lyknie wam numerkow dodajcie jescze przed numerkiem 48 

Rzucam ponizej programik do  callbacku...zobaczcie...potestujcie...

------------------------CUT HERE--------------------------------------

 *
 * callbacks.c -- X11 callbacks for ghostview.
 * Copyright (C) 1992  Timothy O. Theisen
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *   Author: Tim Theisen           Systems Programmer
 * Internet: tim@cs.wisc.edu       Department of Computer Sciences
 *     UUCP: uwvax!tim             University of Wisconsin-Madison
 *    Phone: (608)262-0438         1210 West Dayton Street
 *      FAX: (608)262-9777         Madison, WI   53706
 */

/* This file is part of the hacked version of the ghostview package */
/* which is distributed under the terms of the gnu license. The */
/* modification referred to above is by Tanmoy Bhattacharya, */
/*  on Nov 17, 1994. Neither the modification, */
/* nor the original program provides any warranty. */

#include 
#ifndef BUFSIZ
#define BUFSIZ 1024
#endif

#ifdef VMS
#define getenv _getenv
#endif

extern char *getenv();

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include "Ghostview.h"
#include "gv.h"
#include "ps.h"
#include "pdf.h"

int pagehistory[1024], pageindex=0;

/* Start application folding up by Destroying the top level widget. */
/* The application exits when the last interpreter is killed during */
/* a destroy callback from ghostview widgets. */
void
quit_ghostview(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XtDestroyWidget(toplevel);
}

/* Popup a window. */
void
popup(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    positionpopup((Widget)client_data);
    XtPopup((Widget)client_data, XtGrabNone);
    XRaiseWindow(XtDisplay((Widget)client_data), XtWindow((Widget)client_data));
}

/* Popup a dialog box. */
void
popup_dialog(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
#ifdef SELFILE
    Widget button;
    String okay, cancel;
    String name, init_path;
    Arg args[1];
    FILE* fp;
    struct stat sbuf;
    extern FILE *XsraSelFile();

    button = XtNameToWidget(dialog, "cancel");
    if (button) {
	XtSetArg(args[0], XtNlabel, &cancel);
	XtGetValues(button, args, ONE);
    }
    button = XtNameToWidget(dialog, "okay");
    if (button) {
	XtSetArg(args[0], XtNlabel, &okay);
	XtGetValues(button, args, ONE);
    }
#endif

    mode = (int) client_data;
    switch (mode) {
    case PRINT_WHOLE:
    case PRINT_MARKED:
	SetDialogPrompt(dialog, app_res.print_prompt);
	if (app_res.default_printer)
	    SetDialogResponse(dialog, app_res.default_printer);
	else
	    ClearDialogResponse(dialog);
	popup(w, (XtPointer)dialogpopup, call_data);
	break;
    case OPEN:
#ifdef SELFILE
	if (filename && strcmp(filename, "-")) init_path = filename;
	else init_path = NULL;
	fp = XsraSelFile(toplevel, app_res.open_prompt, okay, cancel,
			 app_res.open_fail, init_path, "r", NULL, &name);
	if (fp == NULL) break;
	if (oldfilename) XtFree(oldfilename);
	oldfilename = filename;
	filename = name;
	if (psfile) fclose(psfile);
	psfile = fp;
	stat(filename, &sbuf);
	mtime = sbuf.st_mtime;
	new_file(0);
	show_page(0);
#else
	SetDialogPrompt(dialog, app_res.open_prompt);
	if (filename && strcmp(filename, "-"))
	    SetDialogResponse(dialog, filename);
	else
	    ClearDialogResponse(dialog);
	popup(w, dialogpopup, call_data);
#endif
	break;
    case SAVE:
#ifdef SELFILE
	fp = XsraSelFile(toplevel, app_res.save_prompt, okay, cancel,
			 app_res.save_fail, "", "w", NULL, &name);
	if (fp == NULL) break;
	pscopydoc(fp);
	fclose(fp);
	XtFree(name);
#else
	SetDialogPrompt(dialog, app_res.save_prompt);
	ClearDialogResponse(dialog);
	popup(w, dialogpopup, call_data);
#endif
	break;
    }
}

/* Explicitly reopen the file. */
void
reopen_file(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    extern int pagehistory[], pageindex;
    struct stat sbuf;
    int number = current_page;

    pdf_clear();
    fclose(psfile);
    pageindex=0;
    XtSetSensitive(backbutton, False);
    psfile = fopen(filename, "r");
    mtime = sbuf.st_mtime;
    if (oldfilename) XtFree(oldfilename);
    oldfilename = XtNewString(filename);
    new_file(number);
    show_page(number);
}

/* Get the selection, if no selection, get the insertion point. */
/* If the new_page is different from the current page show it.  */
/* If not at the first page, show the previous page. */
void
prev_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XawTextPosition pos, end;
    int new_page;

    XawTextGetSelectionPos(toc, &pos, &end);
    if (pos == end) {		/* Nothing selected */
	pos = XawTextGetInsertionPoint(toc);
    }
    if ((new_page = pos/toc_entry_length) == current_page) {
	new_page = current_page - 1;
    }
    if (new_page < 0) return;
    show_page(new_page);
}

void
back_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    extern int pagehistory[], pageindex;
    if (pageindex>0)
      show_page(pagehistory[--pageindex]);
    else
      prev_page(w, client_data, call_data);

    XtSetSensitive(backbutton, pageindex>0);
    return;
}

/* Get the selection, if no selection, get the insertion point. */
/* Show this page.  */
void
this_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    if (toc_text) {
	XawTextPosition pos, end;
	int new_page;

	XawTextGetSelectionPos(toc, &pos, &end);
	if (pos == end) {		/* Nothing selected */
	    pos = XawTextGetInsertionPoint(toc);
	}
	new_page = pos/toc_entry_length;
	show_page(new_page);
    } else {
	GhostviewDisableInterpreter(page);
	show_page(0);
    }
}

/* Get the selection, if no selection, get the insertion point. */
/* If the new_page is different from the current page show it.  */
/* If not at the last page, show the next page. */
void
next_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XawTextPosition pos, end;
    int new_page = 0;

    if (toc_text) {
	XawTextGetSelectionPos(toc, &pos, &end);
	if (pos == end) {		/* Nothing selected */
	    pos = XawTextGetInsertionPoint(toc);
	}
	if ((new_page = pos/toc_entry_length) == current_page) {
	    new_page = current_page + 1;
	}
	if (new_page >= doc->numpages) return;
    }
    show_page(new_page);
}

/* Center the viewport over the page */
void
center_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    Arg args[2];
    Widget scroll;
    float top, shown;

    scroll = XtNameToWidget(pageview, "vertical");
    if (scroll) {
	XtSetArg(args[0], XtNshown, &shown);
	XtSetArg(args[1], XtNtopOfThumb, &top);
	XtGetValues(scroll, args, TWO);

	top = (1.0 - shown) / 2.0;
	XtCallCallbacks(scroll, XtNjumpProc, &top);
    }

    scroll = XtNameToWidget(pageview, "horizontal");
    if (scroll) {
	XtSetArg(args[0], XtNshown, &shown);
	XtSetArg(args[1], XtNtopOfThumb, &top);
	XtGetValues(scroll, args, TWO);

	top = (1.0 - shown) / 2.0;
	XtCallCallbacks(scroll, XtNjumpProc, &top);
    }
}

/* Get the selection, if no selection, get the insertion point. */
/* Mark all pages in range, and cause toc to update. */
void
mark_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XawTextPosition begin, end;
    int i;

    XawTextGetSelectionPos(toc, &begin, &end);
    if (begin == end) {		/* Nothing selected */
	begin = end = XawTextGetInsertionPoint(toc);
    } else {
	end--;			/* Sometimes end spills onto next line */
    }
    for (i = begin/toc_entry_length; i <= end/toc_entry_length; i++) {
	toc_text[i*toc_entry_length] = '*';
	XawTextInvalidate(toc, i*toc_entry_length, i*toc_entry_length+1);
    }
}

/* Get the selection, if no selection, get the insertion point. */
/* Unmark all pages in range, and cause toc to update. */
void
unmark_page(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XawTextPosition begin, end;
    int i;

    XawTextGetSelectionPos(toc, &begin, &end);
    if (begin == end) {		/* Nothing selected */
	begin = end = XawTextGetInsertionPoint(toc);
    } else {
	end--;			/* Sometimes end spills onto next line */
    }
    for (i = begin/toc_entry_length; i <= end/toc_entry_length; i++) {
	toc_text[i*toc_entry_length] = ' ';
	XawTextInvalidate(toc, i*toc_entry_length, i*toc_entry_length+1);
    }
}

/* Set new magstep.  Reshow the current page if magstep changed. */
void
set_magstep(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    app_res.magstep = (int)client_data;
    if (set_new_magstep()) {
	layout_ghostview();
	show_page(current_page);
    }
}

/* Set new orientation.  Reshow the current page if orientation changed. */
void
set_orientation(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    app_res.force_orientation = force_setting;
    app_res.orientation = (XtPageOrientation) client_data;
    if (set_new_orientation(current_page)) {
	layout_ghostview();
	show_page(current_page);
    }
}

/* Swap the landscape labels and change the flag. */
void
swap_landscape(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    Arg args[1];
    String s1, s2;

    app_res.swap_landscape = !app_res.swap_landscape;

    XtSetArg(args[0], XtNlabel, &s1);
    XtGetValues(landscapebutton, args, ONE);
    s1 = XtNewString(s1);
    XtSetArg(args[0], XtNlabel, &s2);
    XtGetValues(seascapebutton, args, ONE);
    s2 = XtNewString(s2);
    XtSetArg(args[0], XtNlabel, s2);
    XtSetValues(landscapebutton, args, ONE);
    XtSetArg(args[0], XtNlabel, s1);
    XtSetValues(seascapebutton, args, ONE);
    XtFree(s1);
    XtFree(s2);

    if (set_new_orientation(current_page)) {
	layout_ghostview();
	show_page(current_page);
    }
}

/* Set new page media.  If new page media is different, update app_resources */
/* and redisplay page. */
void
set_pagemedia(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    int new_pagemedia = (int) client_data;
    if (new_pagemedia >= base_papersize) {
	default_pagemedia = new_pagemedia;
	app_res.force_pagemedia = force_setting;
    } else {
	document_media = new_pagemedia;
	force_document_media = force_setting;
    }
    if (set_new_pagemedia(current_page)) {
	layout_ghostview();
	show_page(current_page);
    }
}

/* track mouse pointer and popup zoom window */
void
track_and_zoom(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    Arg args[20];
    Cardinal num_args;
    Dimension width, height;
    Widget zoom;
    Widget zoomform;
    Widget zoompage;
    Widget zoomdismiss;
    FILE *zoomfile;
    struct stat sbuf;
    GhostviewReturnStruct *p = (GhostviewReturnStruct *)call_data;
    int llx;
    int lly;
    int urx;
    int ury;
    int bottom_margin;
    int left_margin;
    int right_margin;
    int top_margin;
    int i;
    int gotopage;

    /* locator events have zero width and height */
    if ((p->width == 0) || (p->height == 0)) {
	char buf[32];
	if (!app_res.show_locator) return;
	sprintf(buf, "(%d, %d)", p->psx, p->psy);
	XtSetArg(args[0], XtNlabel, buf);
	XtSetValues(locator, args, ONE);
	return;
    }

    /* If no file, nothing to zoom. */
    if (!psfile) return;

    /* If in an anchor jump to instead */
    if ((gotopage=pdf_page(p->psx,p->psy))>=0) {
      if(pageindexpsx - p->width/2;
    lly = p->psy - p->height/2;
    urx = p->psx + p->width/2;
    ury = p->psy + p->height/2;

    /* Make sure zoom window doesn't go off the edge of the page */
    if (llx < current_llx) {
	llx = current_llx;
	urx = llx + p->width;
    }
    if (lly < current_lly) {
	lly = current_lly;
	ury = lly + p->height;
    }
    if (urx > current_urx) {
	urx = current_urx;
	llx = urx - p->width;
    }
    if (ury > current_ury) {
	ury = current_ury;
	lly = ury - p->height;
    }
    if (llx < current_llx) {
	llx = current_llx;
    }
    if (lly < current_lly) {
	lly = current_lly;
    }
    bottom_margin = lly - current_lly;
    left_margin = llx - current_llx;
    right_margin = current_urx - urx;
    top_margin = current_ury - ury;

							num_args = 0;
    XtSetArg(args[num_args], XtNtop, XtChainTop);	num_args++;
    XtSetArg(args[num_args], XtNbottom, XtChainBottom);	num_args++;
    XtSetArg(args[num_args], XtNleft, XtChainLeft);	num_args++;
    XtSetArg(args[num_args], XtNright, XtChainRight);	num_args++;
    XtSetArg(args[num_args], XtNorientation, current_orientation);
							num_args++;
    XtSetArg(args[num_args], XtNllx, llx);      	num_args++;
    XtSetArg(args[num_args], XtNlly, lly);      	num_args++;
    XtSetArg(args[num_args], XtNurx, urx);      	num_args++;
    XtSetArg(args[num_args], XtNury, ury);      	num_args++;
    XtSetArg(args[num_args], XtNbottomMargin, bottom_margin);
							num_args++;
    XtSetArg(args[num_args], XtNleftMargin, left_margin);
							num_args++;
    XtSetArg(args[num_args], XtNrightMargin, right_margin);
							num_args++;
    XtSetArg(args[num_args], XtNtopMargin, top_margin); num_args++;
    XtSetArg(args[num_args], XtNbottomMargin, bottom_margin);
							num_args++;
    XtSetFloatArg(args[num_args], XtNxdpi, p->xdpi);	num_args++;
    XtSetFloatArg(args[num_args], XtNydpi, p->ydpi);	num_args++;
    if (!toc_text) {
        XtSetArg(args[num_args], XtNfilename, filename);	num_args++;
    }
    zoompage = XtCreateManagedWidget("page", ghostviewWidgetClass,
				     zoomform, args, num_args);
    num_ghosts++;
    XtAddCallback(zoompage, XtNcallback, track_and_zoom, (XtPointer)0);
    XtAddCallback(zoompage, XtNmessageCallback, message, (XtPointer)zoompage);
    XtAddCallback(zoompage, XtNdestroyCallback, destroy_ghost,
		  (XtPointer)zoompage);

							num_args = 0;
    XtSetArg(args[num_args], XtNfromVert, zoompage);	num_args++;
    XtSetArg(args[num_args], XtNtop, XtChainBottom);	num_args++;
    XtSetArg(args[num_args], XtNbottom, XtChainBottom);	num_args++;
    XtSetArg(args[num_args], XtNleft, XtChainLeft);	num_args++;
    XtSetArg(args[num_args], XtNright, XtChainRight);	num_args++;
    zoomdismiss = XtCreateManagedWidget("dismiss", commandWidgetClass,
				       zoomform, args, num_args);
    XtAddCallback(zoomdismiss, XtNcallback, destroy, (XtPointer)zoom);

    XtSetArg(args[0], XtNwidth, &width);
    XtGetValues(zoompage, args, ONE);
    XtSetArg(args[0], XtNwidth, width);
    XtSetValues(zoomdismiss, args, ONE);

    XtRealizeWidget(zoom);
    positionpopup(zoom);

							num_args = 0;
    XtSetArg(args[num_args], XtNwidth, &width);		num_args++;
    XtSetArg(args[num_args], XtNheight, &height);	num_args++;
    XtGetValues(zoom, args, num_args);

							      	num_args = 0;
    XtSetArg(args[num_args], XtNminWidth, width);		num_args++;
    XtSetArg(args[num_args], XtNminHeight, height);		num_args++;
    XtSetArg(args[num_args], XtNmaxWidth, width);		num_args++;
    XtSetArg(args[num_args], XtNmaxHeight, height);		num_args++;
    XtSetValues(zoom, args, num_args);
    XSetWMProtocols(XtDisplay(zoom), XtWindow(zoom), &wm_delete_window, 1);
    XtPopup(zoom, XtGrabNone);

    if (toc_text) {
	zoomfile = fopen(filename, "r");
	if (zoomfile == NULL) return;
	GhostviewSendPS(zoompage, zoomfile, doc->beginprolog,
			doc->lenprolog, False);
	GhostviewSendPS(zoompage, zoomfile, doc->beginsetup,
			doc->lensetup, False);
	if (doc->pageorder == DESCEND)
	    i = (doc->numpages - 1) - current_page;
	else
	    i = current_page;
	GhostviewSendPS(zoompage, zoomfile, doc->pages[i].begin,
			doc->pages[i].len, True);
    }
}

/* Process messages from ghostscript */
/* Refresh occurs when window was resized unexpectedly */
void
message(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    int i;
    char *error;

    if (!strcmp((char *) call_data, "Failed")) {
	if ((Widget)client_data == page) {
	    error = "Error: PostScript interpreter failed in main window.\n\n";
	} else {
	    error = "Error: PostScript interpreter failed in zoom window.\n\n";
	}
	output(w, NULL, error);
    } else if (!strcmp((char *) call_data, "BadAlloc")) {
	if ((Widget)client_data == page) {
	    error = 
	       "Warning: Could not allocate backing pixmap in main window.\n\n";
	} else {
	    error = 
	       "Warning: Could not allocate backing pixmap in zoom window.\n\n";
	}
	output(w, NULL, error);
    } else if (!strcmp((char *) call_data, "Refresh")) {
	if (toc_text) {
	    GhostviewSendPS(w, psfile, doc->beginprolog,
			    doc->lenprolog, False);
	    GhostviewSendPS(w, psfile, doc->beginsetup,
			    doc->lensetup, False);
	    if (doc->pageorder == DESCEND)
		i = (doc->numpages - 1) - current_page;
	    else
		i = current_page;
	    GhostviewSendPS(w, psfile, doc->pages[i].begin,
			    doc->pages[i].len, False);
	}
    }
}

/* Take output from ghostscript and display it in the infotext popup window */
void
output(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    Arg args[2];
    XawTextBlock message_block;

    message_block.firstPos = 0;
    message_block.length = strlen(call_data);
    message_block.ptr = call_data;
    message_block.format = FMT8BIT;

    XawTextDisableRedisplay(infotext);

    XtSetArg(args[0], XtNeditType, XawtextAppend);
    XtSetValues(infotext, args, ONE);
    XawTextReplace(infotext, info_length, info_length, &message_block);
    info_length = info_length + message_block.length;

    XtSetArg(args[0], XtNeditType, XawtextRead);
    XtSetArg(args[1], XtNinsertPosition, info_length);
    XtSetValues(infotext, args, TWO);
    XawTextEnableRedisplay(infotext);
    if (!info_up) XtPopup(infopopup, XtGrabNone);
    info_up = True;
}

/* Dismiss popup dialog */
void
okay(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    String name, error;
    Widget dialog;

    dialog = (Widget)client_data;
    name = GetDialogResponse(dialog);
    switch (mode) {
    case PRINT_WHOLE:
    case PRINT_MARKED:
	if (error = print_file(name, (mode == PRINT_WHOLE))) {
	    char *buf = XtMalloc(strlen(error) +
				 strlen(app_res.print_prompt) + 2);
	    sprintf(buf, "%s\n%s", error, app_res.print_prompt);
	    SetDialogPrompt(dialog, buf);
	    XtFree(error);
	    XtFree(buf);
	} else {
	    XtPopdown(XtParent(dialog));
	}
	break;
    case OPEN:
	if (error = open_file(name)) {
	    char *buf = XtMalloc(strlen(error) +
				 strlen(app_res.open_prompt) + 2);
	    sprintf(buf, "%s\n%s", error, app_res.open_prompt);
	    SetDialogPrompt(dialog, buf);
	    XtFree(error);
	    XtFree(buf);
	} else {
	    XtPopdown(XtParent(dialog));
	}
	break;
    case SAVE:
	if (error = save_file(name)) {
	    char *buf = XtMalloc(strlen(error) +
				 strlen(app_res.save_prompt) + 2);
	    sprintf(buf, "%s\n%s", error, app_res.save_prompt);
	    SetDialogPrompt(dialog, buf);
	    XtFree(error);
	    XtFree(buf);
	} else {
	    XtPopdown(XtParent(dialog));
	}
	break;
    }
    XtFree(name);
}

/* Dismiss popup window */
void
dismiss(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XtPopdown((Widget)client_data);
    if ((Widget)client_data == infopopup) info_up = False;
}

/* Destroy popup window */
void
destroy(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    XtDestroyWidget((Widget)client_data);
}

/* destroy callback for Ghostview widgets. */
/* The disable interpreter call ensures that ghostscript is killed. */
/* One the count goes to 0, we are sure that all forked processes have */
/* been killed and that we can safely exit. */
void
destroy_ghost(w, client_data, call_data)
    Widget w;
    XtPointer client_data, call_data;
{
    GhostviewDisableInterpreter((Widget) client_data);
    num_ghosts--;
    if (num_ghosts) return;
    if (dying) old_Xerror(XtDisplay(w), &bomb);
    XtDestroyApplicationContext(app_con);
    exit(0);
}


--------------------------CUT HERE ------------------------------------
 
IV. Jak tu qrwa dokopac innemu hackowi????


Wsrod hackerow panuja raczej przyjazne stosunki, wymianiaja zdobyte 
doswiadczenia,psswd, itp. Jednak  zdarzaja sie zarozumiale typki
ktore maja sie za guru i wqrwiaja innych , szczegolnie nowicjuszy.
Mozna takich gosci latwo zalatwic...bez  wlamow.
Miejscem spotkan hackerow jest IRC , tia oni tez lubia se pogaworzyc.
I wlasnie na ircu chca pokazac to jacy sa dobrzy i wogole.
Najwiekszym kandydatem na najgorszego chooja jest chloptas co sie
zwie Spaceman. Ten skurwiel ciagle banuje tp.net na wszystkich
 hackerskich  kanalach  ,stwierdzajac ze tu ma byc kwarantanna .
(qrwa jebany rasista) Gosc tez czesto lubi przygadywac innym  itp.

Mnie wqrwil tymi banami. Postanowilem wiec tez zostac takim gnojkiem
i to doslownie, wiec wszedlem sobie na irc jako Spaceman!:)))
Czasem nawet w kilku postaciach jak np. Sp3ceman,spacem4n,sp3cem4n itd.
(wchodzimy w kilku wariantach nickow aby gosc nie mogl uzyc jakiejkolwiek 
kombinacji swojego nicka, aha przydalby sie jakis spofer zeby se zmienic 
dane, ja nie musialem uzywac bo jestem na tp.net.wroclaw ,space is wroclaw too:)
zreszta mozna puscic bajer ze jestesmy u rodzinki czy cos takiego ). 
Tak wiec jak juz jest na kanale full kosmicznych zasrancow to robimy mu obore, 
floodujemy, bluzgamy, kickamy, a co najwazniejsze zrazamy do siebie jego
qmpli. Wczesniej przydalby sie jakis wywiad o gosciu ktoreg chcemy zalatwic
na jakich kanalach bywa , w jakiej jest grupie itp. Zreszta mozemy
goscia sami o to wypytac jako jakis lamer np. spacelove lizac mu dupe  i 
schlebiajac mu . Potem zagadujemy jego qmpli ,itp. Jesli gosc dziala
w jakiejs grupie , jak np. Space w Drome of terror, wymianiamy sie z jej 
czlonkami psswd i innymi info, (w zamian dajemy jakas lewe rzeczy).
Zakladamy tez se maila na jakims dupnym serwerku np. spaceman.polbox.com
Gosciom mowimy ze to nasz nowy mail bo stare sa spalone itp. 
(nie dosc ze gosc  straci korespondencje to jeszcze  bedziemy mieli stuff
od jego kolesi). Mozna tez wkopac goscia robiac zjebany wlam na jego konto
i zostawiajac jego namiary (hehe ja moge nawet dac adres domowy space :)) ).
Zapytacie a co z wlasciwym gosciem przeciez on tez bywa na irc.
No tak ale jesli bedzie ich full to kolesie beda zdezorientowani. 
I tak nie predko sie kapna kto jest kto :). Btw: Czy wiecie ze Spacemana
juz niema !! hehe chlop musial zmienic  nicka ,teraz jest jako Kozmo.




V. Cracking.

Juz od dawna programisci zrezygnowali z wprowadzania zabezpieczen do softu
(szczegolnie do gier) wymagajacego passwordu z manuala , Dzis w erze 
multimediow niewielu przecietnych uzytkownikow moze pozwolic sobie na zrzut paru
cedekow na hadeka (czasem tez nie idzie tak latwo ale o tym pozniej ).
Czesto wiec robi sie tzw. CD RIPy. Najczesciej obcinamy gierki z przydlugich
animacji,gadek itp. Mozna robic zerujac  pliki lub gdy to nie zadziala
podmienic nazwy pod najkrotszy plik. Np. gdy w jakims tam katalogu MOVIES mamy
pliki :    o wielkosciach:
 intro.fmv       125 Mb       
 cutsc1.fmv       67 Mb   
 cutsc1.fmv       78 Mb
 outro.fmv       146 Mb    
 logo.fmv        12  Mb

to wybieramy najmniejszy  plik - logo.fmv, kopiujemy go jako intro.fmv itd.
Jest to troche lamerski sposob ale w niektorych wypadkach jedyny (gdy mamy
popularne formaty animacji typu avi,mov czy fli to spokojnie mozna wyzerowac
pliki). Trzeba tez  w konfigu  gry zmienic sciezki do katalogu,zawierajacego
sciagniete przez nas pliki, na aktualny katalog znajdujacy sie na naszym dysku.
Jednak czesto program zada cedeka ...coz wtedy trzeba  uzyc komendy dosowskiej
subst oraz jakis emulatorek cedeka (np. Fakecd,cdemu2,0cd itp. ).
Piszemy subst [ nazwa napedu ktory ma byc utworzony] [sciezka do plikow ] 
np. subst D:  C:\gra\cd1

Potem uzywamy emulatora np. cdemu2 d: (czyli nazwa napedu)
Aha niektore uparte programiki sprawdzaja takze nazwe  kompaktu...ale znow
pomoze nam dos ,piszemy label i wklepujemy odpowiednia nazwe.

Wszystko byloby cacy jakby mozna wszystkie programiki tak latwo ciac
lecz niestety czesc programikow jest kompresowana w jeden olbrzymi plik
jak np. red alert,diablo czy neverhood, ale o tym to juz napisze w nastepnej 
czesci..
 
          ..uff.. narazie koniec


     COOMING SOON : "100 Sposobow jak krecic panienki na IRC" 
                      
                    " Boxy - prawda czy tylko mit?"

Jesli masz cos intereseujacego co moglbym wrzucic to tego FAQ , masz jakies
 pytania, lub chcesz najnowsza wersje , to mailnij do mnie.    
==========================================================================
               ------->    wiedzmin@friko.onet.pl   <-----
=========================================================================

 Viedzm1n/ "...you can't feel safe, when you are connected in net..."  


GREETINGS TO : Erased,Woodpeck,Ashw00d,Lysy,Jojec,As2,bTh,Ult0r,Luk_Skyw, 
P0WER,Voodoo,Hackelber,Daworm,Yarpen,Haszak,Miki,Wodzu,AnJa,_mo_,
Daworm,Pan,NON,Hellfire,Jacky and more...
 
                        SPACEMAN SUX 4EVER!
               
                              C.D.N


                           DISCONECTED...